package cn.terminus.data.customer.contractinfo.dao;

import cn.terminus.common.customer.bean.analysis.AnalysisYearDto;
import cn.terminus.common.customer.bean.analysis.ContractTypeRoomDetail;
import cn.terminus.common.customer.bean.contractinfo.dto.*;
import cn.terminus.common.customer.bean.custompurposeroom.dto.CustomPurposeRoomResultDto;
import cn.terminus.result.common.page.TerminusPageAble;
import cn.terminus.result.common.page.TerminusPageInfo;

import java.util.List;

/**
 * 合同信息表(ContractInfo)表服务接口
 *
 * @author makejava
 * @since 2021-07-21 11:01:06
 */
public interface ContractInfoDao {

    /**
     * 新增
     *
     * @param dto
     * @return
     */
    Integer add(ContractInfoNewDto dto);

    /**
     * 更新
     *
     * @param dto
     * @return
     */
    Integer update(ContractInfoEditDto dto);


    /**
     * gets
     *
     * @param dto
     * @return
     */
    List<ContractInfoResultDto> gets(ContractInfoGetsDto dto);


    /**
     * 删除
     *
     * @param dto
     * @return
     */
    Integer delete(ContractInfoDeleteDto dto);

    /**
     * 查询
     *
     * @param dto
     * @return
     */
    List<ContractInfoResultDto> query(ContractInfoQueryDto dto);

    /**
     * 查询
     *
     * @param dto
     * @return
     */
    List<ContractInfoResultDto> queryWithPage(ContractPageQueryDto dto);

    /**
     * 分页查询
     *
     * @param dto
     * @param page
     * @return
     */
    TerminusPageAble<ContractInfoResultDto> page(ContractInfoQueryDto dto, TerminusPageInfo page);

    List<ContractInfoResultDto> getByCustomerId(Long cboCustomerId);

    Integer deleteByIds(List<Long> ids);

    List<CustomPurposeRoomResultDto> geturposeRoomInfoByContractIds(List<Long> contractIdList);

    Integer getByCustomerIdList(List<Long> ids);

    Integer analysisTotalContract(AnalysisYearDto dto);

    List<ContractTypeRoomDetail> queryByIds(List<Long> ids);
}
